package leetcode.huadonchuangkou;

public class leetcode3 {
    public int lengthOfLongestSubstring(String s) {
        //没有重复字符，哈希表记录
        //滑动窗口构造
        //窗口保持字母不重复
        //只有新加进来的字母会对字母重复造成影响
        int[] hash = new int[128];
        int n=s.length();
        int l=0;//窗口左
        int res=0;
        for(int r=0;r<n;r++){
            //枚举每个字母
            char cur=s.charAt(r);
            //记录
            hash[cur]++;
            //如果大于等于2，收缩窗口，直到不重复（新加进来的元素影响结果，这个元素是重复的元素）
            while(hash[cur] > 1){
                //获取窗口左侧值
                char leftVal=s.charAt(l++);
                hash[leftVal]--;
            }
            //更新结果
            res=Math.max(res,r-l+1);
        }
        return res;
    }
}
